今天開始跟大家介紹kernel method(核函數)。
在之前的方法中,訓練資料都是用來訓練一個 w ,接著我們用這個 w 來預測,也就是說訓練資料在訓練階段結束就不會再被用到了。所以很自然的,就有另一個角度的預測,是將訓練資料用在預測階段。這通常會是一個memory-base的方式,也就是所有資料我們都必須要存下來用以預測,而在這種方式中,通常需要一個計算兩個向量之間相似度的方式,這個方式常常就是我們的kernel function。
所以到底要怎麼用呢?其實許多線性模型可以轉換成用kernel function的表示。我們先定義一個kernel
接著我們老梗新用,再看一下以前regression的例子,這次我們要看他的對偶表示法
一樣流程,就令微分等於零那個,可以得到最好的 w 是
其中
接著我們把 w 帶回去第一個式子,可以得到
這就是他的對偶表示法
接著定義矩陣K,他的n列m行是
可以發現他就是一開始定義的kernel function組成的矩陣
接著把
的phi換成K,再解 a 可以得
我們就可以用這現在算出來的這個來預測新得到的x
其中
這樣做的好處是我們可以透過改變kernel function去改變我們模型的維度,甚至可以使用到無限維的特徵空間!為什麼可以這樣呢?可以想像,我定義的kernel是用來計算相似性,那我當然可以換另一個計算相似性的方式。
例如常常被使用的Gaussian kernel
這個就是可以將特徵向量轉為無限維的kernel
希望大家這樣可以瞭解一點kernel在幹麻,明天就開始跟大家介紹一些model!